<?php

global $patterns;
$patterns['username'] = '/^[0-9a-zA-Z]{3,13}$/';
$patterns['nome'] = '/^[a-zA-Z]{3,13}$/';
$patterns['cognome'] = '/^[a-zA-Z ]{3,13}$/';
$patterns['email'] = '/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/';
$patterns['via'] = '/^[a-zA-Z]{3,12}$/';
$patterns['cap'] = '/^[0-9]{5}$/';
$patterns['civico'] = '/^[a-z0-9\ ]{0,5}$/';
$patterns['citta'] = '/^[a-zA-Z]{2,15}$/';
$patterns['codicefiscale'] = '/^[A-Za-z]{6}[0-9]{2}[A-Za-z][0-9]{2}[A-Za-z][0-9]{3}[A-Za-z]$/';
$patterns['titolo'] = '/^[a-zA-Z0-9\,\.\:\ ]{1,200}$/';
$patterns['numero_telefonico'] = '/^[0-9 \/\\/\-]{5,11}$/';


/**
 * Description of UCheck
 *
 * @author andrea ialenti
 */
class UChecks {

    /**
     *
     * Controlla il campo email
     * @param string $email l'email da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_email($email,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($email == "" || !isset($email))){
          $error['field'] = "email";
          $error['code'] = 1;
          $error['description'] = "Email non inserita";
          return $error;
        }
        if(!preg_match($patterns['email'], $email)){
          $error['field'] = "email";
          $error['code'] = 2;
          $error['description'] = "Indirizzo email non valido";
          return $error;
        }
        return false;
    }
    
    /**
     *
     * Controlla il nome
     * @param string nome il nome da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_nome($nome,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($nome == "" || !isset($nome))){
          $error['field'] = "nome";
          $error['code'] = 1;
          $error['description'] = "Nome non inserito";
          return $error;
        }
        if(!preg_match($patterns['nome'], $nome)){
          $error['field'] = "nome";
          $error['code'] = 2;
          $error['description'] = "Il nome contiene caratteri non ammessi";
          return $error;
        }
        return false;
    }
    
    public function check_titolo($titolo,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($titolo == "" || !isset($titolo))){
          $error['field'] = "titolo";
          $error['code'] = 1;
          $error['description'] = "Titolo non inserito";
          return $error;
        }
        if(!preg_match($patterns['titolo'], $titolo)){
          $error['field'] = "titolo";
          $error['code'] = 2;
          $error['description'] = "Caratteri non ammessi nel titolo";
          return $error;
        }
        return false;
    }
    
    
    public function check_descrizione($descrizione,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($descrizione == "" || !isset($descrizione))){
          $error['field'] = "descrizione";
          $error['code'] = 1;
          $error['description'] = "Descrizione non inserita";
          return $error;
        }
        return false;
    }
    public function check_messaggio($messaggio,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($messaggio == "" || !isset($messaggio))){
          $error['field'] = "descrizione";
          $error['code'] = 1;
          $error['description'] = "Messaggio non inserito";
          return $error;
        }
        return false;
    }
    
    /**
     *
     * Controlla il cognome
     * @param string $cognome il cognome da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_cognome($cognome,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($cognome == "" || !isset($cognome))){
          $error['field'] = "cognome";
          $error['code'] = 1;
          $error['description'] = "Cognome non inserito";
          return $error;
        }
        if(!preg_match($patterns['cognome'], $cognome)){
          $error['field'] = "cognome";
          $error['code'] = 2;
          $error['description'] = "Il cognome contiene caratteri non ammessi";
          return $error;
        }
        return false;
    }
    
    /**
     *
     * Controlla il CAP
     * @param string $cap il CAP da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_cap($cap,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($cap == "" || !isset($cap))){
          $error['field'] = "cap";
          $error['code'] = 1;
          $error['description'] = "CAP non inserito";
          return $error;
        }
        if(!preg_match($patterns['cap'], $cap)){
          $error['field'] = "cap";
          $error['code'] = 2;
          $error['description'] = "Il CAP contiene caratteri non ammessi";
          return $error;
        }
        return false;
    }
    
    /**
     *
     * Controlla il numero di telefono
     * @param string $numero il numero da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_numero_telefono($numero,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($numero == "" || !isset($numero))){
          $error['field'] = "numero";
          $error['code'] = 1;
          $error['description'] = "Devi inserire il numero telefonico ";
          return $error;
        }
        if(!preg_match($patterns['numero_telefonico'], $numero)){
          $error['field'] = "numero";
          $error['code'] = 2;
          $error['description'] = "Il numero di telefono contiene caratteri non ammessi";
          return $error;
        }
        return false;
    }
    
    
    /**
     *
     * Controlla l'username
     * @param string $username l'username da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_username($username,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($username == "" || !isset($username))){
          $error['field'] = "username";
          $error['code'] = 1;
          $error['description'] = "Username non inserito";
          return $error;
        }
        if(!preg_match($patterns['username'], $username)){
          $error['field'] = "username";
          $error['code'] = 2;
          $error['description'] = "Il username contiene caratteri non ammessi";
          return $error;
        }
        return false;
    }
    
    /**
     *
     * Controlla la via
     * @param string $via la via da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_via($via,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($via == "" || !isset($via))){
          $error['field'] = "via";
          $error['code'] = 1;
          $error['description'] = "Via non inserita";
          return $error;
        }
        if(!preg_match($patterns['via'], $via)){
          $error['field'] = "via";
          $error['code'] = 2;
          $error['description'] = "La via contiene caratteri non ammessi";
          return $error;
        }
        return false;
    }
    
    /**
     *
     * Controlla la citta
     * @param string $citta la citta da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_citta($citta,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($citta == "" || !isset($citta))){
          $error['field'] = "citta";
          $error['code'] = 1;
          $error['description'] = "città non inserita";
          return $error;
        }
        if(!preg_match($patterns['citta'], $citta)){
          $error['field'] = "citta";
          $error['code'] = 2;
          $error['description'] = "La città contiene caratteri non ammessi";
          return $error;
        }
        return false;
    }
    
    /**
     *
     * Controlla il civico
     * @param string civico il civico da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_civico($civico,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($civico == "" || !isset($civico))){
          $error['field'] = "civico";
          $error['code'] = 1;
          $error['description'] = "civico non inserito";
          return $error;
        }
        if(!preg_match($patterns['civico'], $civico)){
          $error['field'] = "civico";
          $error['code'] = 2;
          $error['description'] = "Il civico contiene caratteri non ammessi";
          return $error;
        }
        return false;
    }
    
    /**
     *
     * Controlla il codicefiscale
     * @param string codicefiscale il codicefiscale da controllare
     * @param bool $required default:true, porre a false se il campo non è ammesso
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_codicefiscale($codicefiscale,$required = true){
      $error = array(); global $patterns;
        if($required == true && ($codicefiscale == "" || !isset($codicefiscale))){
          $error['field'] = "codicefiscale";
          $error['code'] = 1;
          $error['description'] = "codice fiscale non inserito";
          return $error;
        }
        if(!preg_match($patterns['codicefiscale'], $codicefiscale)){
          $error['field'] = "codicefiscale";
          $error['code'] = 2;
          $error['description'] = "Il codice fiscale contiene caratteri non ammessi";
          return $error;
        }
        return false;
    }
    
    
    /**
     *
     * Controlla se una select è stata selezionata
     * @param string $selval il valore della select
     * @param string $selname il nome della select
     * @param string $default il valore di default della select
     * @return mixed false se NON ci sono errori, un array associativo (campi: code, description) in caso di errore
     */
    public function check_select($selval,$selname,$default=""){
      $error = array();
        if(($selval == $default || !isset($selval))){
          $error['field'] = "$selname";
          $error['code'] = 1;
          $error['description'] = "Devi scegliere un campo per $selname";
          return $error;
        }
        return false;
    }
    

    public function simplyCheckIfError($errors){
        $error = false;
        foreach ($errors as $value) {
            if($value != false)
                $error = true;
        }
        return $error;
    }
}

?>
